<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php学习笔记[010]</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="show"><span>021 PHP面向对象开发学习（五）</span></div>
<?php include 'include/top.php';?>

<div class="text"><b>抽象关键字：abstract</b>
<strong>abstract</strong>用于申明该元素为抽象元素。<br />
使用语法：<br />
<strong>abstract</strong>class 类名<br />
<strong>abstract</strong>function 方法名<br />
</div>
<div class="text"><b>抽象方法和抽象类</b>
至少有一个抽象方法的类就是抽象类。
</div>
<div class="text"><b>抽象类和方法使用规则</b>
抽象类必须被继承才能使用，不能单独实例化。<br />
抽象方法必须被重载才能使用，未被重载的抽象方法无法被使用，且该类无法被实例化。<br />
我们用下面的实例来表述它：<br />
<div class="code">
&lt;?php<br />
  abstract class c1{<br />
  abstract function fun1();<br />
  abstract function fun2();<br />
  abstract function fun3();<br />
  }<br />
  class c2 extends c1<br />
  {<br />
  function fun1(){<br />
  return '☜☺☞';<br />
  }<br />
  function fun2(){<br />
  return '☜☺☞☜☺☞';<br />
  }<br />
  function fun3(){<br />
  return '☜☺☞☜☺☞☜☺☞';<br />
  }<br />
  }<br />
  $c=new c2();<br />
  echo $c-&gt;fun1().'&lt;br /&gt;';<br />
  echo $c-&gt;fun2().'&lt;br /&gt;';<br />
  echo $c-&gt;fun3().'&lt;br /&gt;';<br />
  ?&gt;
  </div>
我们来看运行的效果：
<div class="effect">
<?php
abstract class c1{
abstract function fun1();
abstract function fun2();
abstract function fun3();
}
class c2 extends c1
{
function fun1(){
return '☜☺☞';
}
function fun2(){
return '☜☺☞☜☺☞';
}
function fun3(){
return '☜☺☞☜☺☞☜☺☞';
}
}
$c=new c2();
echo $c->fun1().'<br />';
echo $c->fun2().'<br />';
echo $c->fun3().'<br />';
?>
</div>
</div>

</body>
</html>
